"""
@Author : 合肥一元数智教育科技有限公司
@Date :  2025/2/26 8:50
@Description :   定义汽车类   分析类中定义的属性  和  self.属性 添加的值的区别
                 self.属性  属性属于实例本身

1.  类中函数外定义的变量称之为成员变量   变量属于类本身，不属于任何实例
    访问类中的属性和函数的方式：
        1.
         对象名.属性名    如果实例中有和类中相同名字的属性   会优先访问实例中的属性，如果没有则到类中查找
         对象名.函数名()
        2.
          类名.属性名       只能访问到类中定义的成员变量   无法访问通过类创建的实例中的属性
          类名.函数名(对象)
"""


class Car:
    # 汽车品牌
    brand = 'xiaomi'
    # 型号
    model = 'su7'

    #  在实例化时该函数会被自动调用  self  表示当前实例
    def __init__(self, brand, model, price):
        print('car实例被创建...')
        #  动态添加对象属性
        self.brand = brand
        self.model = model
        #  price 属于实例  和当前类无关
        self.price = price

    def show_info(self):
        print(f'car.brand: {self.brand}, car.model: {self.model}')


# 实例化Car
car = Car('比亚迪', '宋', 200)
# car = Car()
# 访问实例中的属性值
print(f'car.brand = {car.brand}')
print(f'car.model={car.model}')
print(f'car.price={car.price}')
#  对象访问函数
car.show_info()

#  访问属性的方式2  类名.属性名
print(f'Car.brand = {Car.brand}')
print(f'Car.model = {Car.model}')


# print(f'Car.price = {Car.price}')


class Aoo:
    class_attribute = 'this is a class attribute'


aoo_1 = Aoo()
print(f'aoo_1.class_attribute = {aoo_1.class_attribute}')

aoo_2 = Aoo()
print(f'aoo_2.class_attribute = {aoo_2.class_attribute}')

print('*' * 30)
#  通过某个实例修改属性值
aoo_1.class_attribute = 'this is a aoo_1 attribute'

# 修改成员变量的值  类中的成员变量的修改 会影响所有通过该类创建的实例
Aoo.class_attribute = 'this is a new class attribute'

print(f'aoo_1.class_attribute = {aoo_1.class_attribute}')
print(f'aoo_2.class_attribute = {aoo_2.class_attribute}')
print(f'Aoo.class_attribute = {Aoo.class_attribute}')
